a45e65d2bf2d1742bdc3bf0c8fb70cf3c03bc7d2,alien4cloud-rest-api/src/main/java/alien4cloud/rest/orchestrator/LocationResourcesSecurityController.java,LocationResourcesSecurityController,updateAuthorizedEnvironmentsPerApplication,#String#String#String#ApplicationEnvironmentAuthorizationUpdateRequest#,246
Before Change
checkAllAuthorizationsForApplicationsAndEnvironments(request, location);
LocationResourceTemplate resourceTemplate = locationResourceService.getOrFail(resourceId);
if (request.getApplicationsToDelete() != null && request.getApplicationsToDelete().length > 0) {
resourcePermissionService.revokePermission(resourceTemplate, Subject.APPLICATION, request.getApplicationsToDelete());
}
if (request.getEnvironmentsToDelete() != null && request.getEnvironmentsToDelete().length > 0) {
resourcePermissionService.revokePermission(resourceTemplate, Subject.ENVIRONMENT, request.getEnvironmentsToDelete());
}
List<String> envIds = Lists.newArrayList();
if (request.getApplicationsToAdd() != null && request.getApplicationsToAdd().length > 0) {
resourcePermissionService.grantPermission(resourceTemplate, Subject.APPLICATION, request.getApplicationsToAdd());
// when an app is added, all eventual existing env authorizations are removed
for (String applicationToAddId : request.getApplicationsToAdd()) {
ApplicationEnvironment[] aes = applicationEnvironmentService.getByApplicationId(applicationToAddId);
for (ApplicationEnvironment ae : aes) {
envIds.add(ae.getId());
}
}
if (!envIds.isEmpty()) {
resourcePermissionService.revokePermission(resourceTemplate, Subject.ENVIRONMENT, envIds.toArray(new String[envIds.size()]));
}
}
if (request.getEnvironmentsToAdd() != null && request.getEnvironmentsToAdd().length > 0) {
List<String> envToAddSet = Arrays.stream(request.getEnvironmentsToAdd()).filter(env -> !envIds.contains(env)).collect(Collectors.toList());
resourcePermissionService.grantPermission(resourceTemplate, Subject.ENVIRONMENT, envToAddSet.toArray(new String[envToAddSet.size()]));
}
After Change
checkAllAuthorizationsForApplicationsAndEnvironments(request, location);
LocationResourceTemplate resourceTemplate = locationResourceService.getOrFail(resourceId);
if (ArrayUtils.isNotEmpty(request.getApplicationsToDelete())) {
resourcePermissionService.revokePermission(resourceTemplate, Subject.APPLICATION, request.getApplicationsToDelete());
}
if (ArrayUtils.isNotEmpty(request.getEnvironmentsToDelete())) {
resourcePermissionService.revokePermission(resourceTemplate, Subject.ENVIRONMENT, request.getEnvironmentsToDelete());
}
Set<String> envIds = Sets.newHashSet();
if (ArrayUtils.isNotEmpty(request.getApplicationsToAdd())) {
resourcePermissionService.grantPermission(resourceTemplate, Subject.APPLICATION, request.getApplicationsToAdd());
// when an app is added, all eventual existing env authorizations are removed
for (String applicationToAddId : request.getApplicationsToAdd()) {
ApplicationEnvironment[] aes = applicationEnvironmentService.getByApplicationId(applicationToAddId);
for (ApplicationEnvironment ae : aes) {
envIds.add(ae.getId());
}
}
if (!envIds.isEmpty()) {
resourcePermissionService.revokePermission(resourceTemplate, Subject.ENVIRONMENT, envIds.toArray(new String[envIds.size()]));
}
}
if (ArrayUtils.isNotEmpty(request.getEnvironmentsToAdd())) {
List<String> envToAddSet = Arrays.stream(request.getEnvironmentsToAdd()).filter(env -> !envIds.contains(env)).collect(Collectors.toList());
resourcePermissionService.grantPermission(resourceTemplate, Subject.ENVIRONMENT, envToAddSet.toArray(new String[envToAddSet.size()]));
}